import router from './router'
import store from '@/store/index.js'
// 对路由跳转做拦截
// 前置路由守卫 - 在页面跳跳转做拦截
router.beforeEach(async(to, from, next) => {
  // to: 去哪里的路由信息
  // from: 从哪里来的路由信息
  // next: 控制能跳转

  // 如果没有登录, 跳转到登陆页面; 如果登录了,允许跳转到首页(如果用户要去是的登录页面, 即使没有登录token, 也可以去,所以确保不要从登录又跳转到登录,变成死循环,造成栈溢出)
  // 注意, 在.vue文件中,可以通过this.$store.state.user访问数据,但是在js文件中不可以,因为this不是指向组件

  // 白名单路径, 允许直接访问, 不写这里会造成栈溢出(死循环)
  if (['/login', '/learnvuex', '/404'].includes(to.path)) {
    return next()
  }

  if (store.state.user.token) {
    // 允许页面跳转
    // 没有用户id就获取用户信息
    if (!store.state.user.userInfo.userId) {
      await store.dispatch('user/getInfo')
    }
    next()
  } else {
    // 不许跳转
    next('/login')
  }
})
// 后置路由守卫 - 在页面跳跳转做拦截
router.afterEach((to, from) => {
})

